System for delivering dynamic content

ABSTRACT

A method and system for presenting a requested web page selected from a plurality of web pages is provided and includes the step of performing at least one processing task associated with the requested web page. Next, at least one content bean for retrieving content required for the requested web page is invoked. Next, the content required for the requested web page is stored in at least one model bean. Next, the content from said at least one model bean is received. Next, at least one view bean for rendering said requested web page is invoked. Finally, the requested web page including the content is presented.

This application claims the benefit of the filing date of U.S.provisional application Ser. No. 60/294,728 entitled “Method ForDeveloping Java Applications” which was filed on May 31, 2001.

BACKGROUND

The following invention relates to a system and method for providinginformation and, in particular, to a system for serving dynamic contentin a web environment.

Prior art techniques exist for presenting content to a requesting clientbrowser. A particular technique implements a Model-View-Controller(“MVC”) architecture that separates the presentation of content from theactual application data. In the MVC architecture, a model componentrepresents the application data and methods that operate on that data. Aview presents the data to a requesting user. A controller componenttranslates user actions into operations on the model. The modelcomponent, in turn, updates the view to reflect changes to data.

Referring now to FIG. 1, there is shown a system 1 that employs a Model2 MVC architecture for presenting dynamic content to a requesting webbrowser using JavaServer Pages (“JSP”) technology. JSP technologyfacilitates the separation of the user interface from content generationthereby enabling designers to change the overall page layout withoutaltering the underlying dynamic content (seehttp://java.sun.com/products/jsp/.)

In particular, a request for a particular web page is initiallysubmitted by a client browser 11 to a controller 12. Controller 12includes a dispatcher 13 that identifies the requesting user, determinesthe page being requested, establishes the context of the request andinvokes one of a plurality of business logic handlers 14 to process therequest. The selected business logic handler then initiates theprocessing required to satisfy the client's page request includinginteracting with backend systems to retrieve or modify some persistentstate. When the processing is completed, the business logic handler thencreates and/or modifies state data 15 that is stored by a modelcomponent 16. Business logic handler then passes control back tocontroller 12.

Controller 12 then determines which of a plurality of JSPs 18,maintained by a view component 17, to invoke for presenting the resultsto the requesting client. The selected one of JSPs 18 then renders therequested page as HTML. In the event the selected one of JSPs 18requires application data for inclusion in the page, it extracts suchdata directly from state data 15 maintained by model component 16 thathas previously been setup by one of business logic handlers 14. Once thepage is rendered, the selected one of JSPs 18 presents the page to therequesting client browser for display.

Typically, there is a single instance of the controller per each webapplication that services all requests for pages from the webapplication. In order to handle multiple simultaneous requests, thecontroller multi-threads so that multiple client requests can beprocessed concurrently.

A drawback exists with respect to the prior art Model 2 architecture inthat each page that is to be served by the web application requires aunique business logic handler for processing state data and a unique JSPfor presenting the resulting page to the requesting client browser.Requiring a unique business logic handler and JSP for each web pagedrastically increases the development effort required to create andmaintain a web-based application, especially as the number of web pagesto served by the application is large. Furthermore, because differentbusiness logic handlers and different JSPs that perform similar tasks,albeit for different pages, may be written by different developers,inconsistencies and errors may easily occur. In addition, becausesimilar program code may replicated across numerous business logichandlers and JSPs that perform similar tasks, updating such code istime-consuming and prone to error. Thus, because the prior art Model 2architecture requires a significant amount of code sharing betweendifferent business logic handlers and different JSPs, the developmentand maintenance of the prior art architecture is costly and inefficient.

Accordingly, its is desirable to provide an architecture for servingdynamic content that improves the efficiency and reduces the overheadcosts associated with prior art architectures.

SUMMARY OF THE INVENTION

The present invention is directed to overcoming the drawbacks of theprior art. Under the present invention a system is provided forpresenting a requested web page selected from a plurality of web pages.The system includes a plurality of handlers each performing at least oneprocessing task associated with one of the plurality of web pages. Atleast one content bean being invoked by any of the plurality of handlersis included for retrieving content required for the one of the pluralityof web pages associated with the any of said plurality of handlers. Alsoincluded is at least one model bean for storing the content. A pluralityof views is included wherein each of the plurality of views associatedwith one of the plurality of web pages receives the content from the atleast one model bean and presents the one of the plurality of web pages.Also included is at least one view bean being invoked by any of theplurality views for rendering the one of the plurality of web pages.Finally, a controller for receiving a request for the requested web pageis included. When the controller receives the request, the controllerinvokes the one of the plurality of handlers associated with therequested web page for processing content required for the requested webpage and the controller invokes the one of the plurality of views forpresenting the requested web page.

In an exemplary embodiment, the request for the requested web pageincludes at least one parameter and the at least one processing taskperformed by at least one of the plurality of handlers includesvalidating the at least one parameter.

In another exemplary embodiment, the request for the requested web pageis subsequent to a navigation and the at least one processing taskperformed by at least one of the plurality of handlers includesvalidating the navigation.

In yet another exemplary embodiment, at least one of the plurality ofhandlers directs the controller to cause a different web page to bepresented.

In still yet another exemplary embodiment, at least one of the pluralityof handlers directs the controller to invoke a different one of theplurality of views for presenting the requested web page.

In an exemplary embodiment, at least one of the handlers renders therequested web page.

In another exemplary embodiment, the controller presents the requestedof web page.

In yet another exemplary embodiment, each of the plurality of handlersis multithreaded.

In still yet another exemplary embodiment, the at least one content beanreceives content from at least one content system.

In an exemplary embodiment, the system has a first interface and thecontent system has a second interface and the at least one content beantranslates between the first interface and the second interface.

In another exemplary embodiment, a plurality of content beans eachhaving a function is included wherein the functions of the plurality ofcontent beans are layered.

In yet another exemplary embodiment, a configuration file is includedthat includes a list of data objects for at least one of the pluralityof web pages, and wherein the at least one content bean receives thelist of data objects and retrieves the data objects in the list forinclusion in the at least one of the plurality of web pages.

In still yet another exemplary embodiment, the at least one of theplurality of web pages is modified by modifying the list of dataobjects.

In an exemplary embodiment, the configuration file includesauthorization requirements for the requested web page and the handlerverifies that the request for the requested web page satisfies theauthorization requirements.

In another exemplary embodiment, each of the plurality of views ismultithreaded.

In yet another exemplary embodiment, each of the plurality of views isformed using JSP technology.

In still yet another exemplary embodiment, the at least one view beanformats the one of the plurality of web pages into HTML.

In an exemplary embodiment, a language file storing text in a pluralityof languages is included, the text being associated with a text label,and wherein at least one of the plurality of web pages includes the textlabel and the at least one view bean replaces the text label with theassociated text in a selected one of the plurality of languages.

Under the present invention, a method for presenting a requested webpage selected from a plurality of web pages is provided and includes thestep of performing at least one processing task associated with therequested web page. Next, at least one content bean for retrievingcontent required for the requested web page is invoked. Next, thecontent required for the requested web page is stored in at least onemodel bean. Next, the content from said at least one model bean isreceived. Next, at least one view bean for rendering said requested webpage is invoked. Finally, the requested web page including the contentis presented.

In an exemplary embodiment, the request for the requested web pageincludes at least one parameter and the step of performing at least oneprocessing task includes the step of validating the at least oneparameter.

In another exemplary embodiment, the request for the requested web pageis subsequent to a navigation and the step of performing at least oneprocessing task includes the step of validating the navigation.

In yet another exemplary embodiment, the method includes the step ofdirecting a different web page to be presented.

In still yet another exemplary embodiment, the at least one content beanreceives content from at least one content system.

In an exemplary embodiment, the at least one content bean executes on asystem having a first interface and the content system has a secondinterface and wherein the step of invoking at least one content bean forretrieving content includes the step of translating between the firstinterface and the second interface.

In another exemplary embodiment, a plurality of content beans eachhaving a function and the functions of the plurality of content beansare layered.

In yet another exemplary embodiment, a configuration file is included,wherein the configuration file includes a list of data objects for therequested web page, and wherein the step of invoking at least onecontent bean for retrieving content required includes the steps ofreceiving the list of data objects and retrieving the data objects inthe list for inclusion in the requested web page.

In still yet another exemplary embodiment, the method includes the stepof modifying said requested web page by modifying said list of dataobjects.

In an exemplary embodiment, the configuration file includesauthorization requirements for the requested web page and it is verifiedthat the request for the requested web page satisfies the authorizationrequirements.

In another exemplary embodiment, the step of invoking at least one viewbean for rendering the requested web page includes the step offormatting the requested web page into HTML.

In yet another exemplary embodiment, a language file storing text in aplurality of languages is included, the text being associated with atext label, the requested web page includes the text label, and whereinthe step of invoking at least one view bean for rendering the requestedweb page includes the step of replacing the text label with theassociated text in a selected one of the plurality of languages.

Accordingly, a system and method is provided for serving dynamic contentthat improves the efficiency and reduces the overhead costs associatedwith prior art architectures.

The invention accordingly comprises the features of construction,combination of elements and arrangement of parts that will beexemplified in the following detailed disclosure, and the scope of theinvention will be indicated in the claims. Other features and advantagesof the invention will be apparent from the description, the drawings andthe claims.

DESCRIPTION OF THE DRAWINGS

For a fuller understanding of the invention, reference is made to thefollowing description taken in conjunction with the accompanyingdrawings, in which:

FIG. 1 is a system that employs a prior art Model 2 MVC architecture forpresenting dynamic content; and

FIG. 2 is a block diagram of a system for delivering dynamic contentaccording to the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

Referring now to FIG. 2, there is shown a block diagram of a system 2for delivering dynamic content according to the present invention. Aclient browser 212, that may be, for example, a personal computerrunning browser software, communicates with system 2 using any knowncommunications protocol and method, such as, by way of non-limitingexample, the Internet. Client browser 212 communicates with system 2 forthe purpose of requesting a web page. Upon receiving the web pagerequest, system 2 retrieves any content necessary for fulfilling therequest from a local content database 213 and/or external systems 214.System 2 then presents the web page containing the content to clientbrowser in a manner described below.

For example, system 2 may be operated by a financial institution thatprovides its clients with web access to the clients' account activity.In such a case, client browser 212 operated by a client having anaccount with the financial institution may request an account statusthat includes recent trade information stored in the financialinstitution's books and records. In response, system 2 retrieves therelevant information to fulfill the client's request and presents toclient browser 212 a suitably formatted web page containing therequested information. Similarly, system 2 may be used to present toclient browser 212 any other type of information.

System 2 includes a controller 210 which processes the web page requestsreceived from client browser 212. Upon receiving a request, controller210 determines which page was requested by client browser 212 and thecontext of the particular request. The request context may includevarious factors such as, by way of non-limiting example, the identity ofthe requesting user, the user's preferences, such as languagepreferences, and any conversational state that has been setup for thatuser. Controller 210 then associates the context with the underlyingHTTP Session that initiated the request so that everything that takesplace in the processing of a particular request can always be attributedto the requesting user.

In addition to maintaining user context information, controller 210maintains context information that relates to each particular request bya client that may include, by way of non-limiting example, the name ofthe current web page being processed, the name of the original web pagerequested (in the case of page forwarding) or the success/failure statusthus far of the current request. By maintaining request contextinformation, controller 210 is able to maintain transient informationabout each individual request to be processed.

Controller 210 then invokes one of a plurality of handlers 217 forperforming the information processing required for to meet the client'srequest. Once such processing is completed, controller 210 then invokesone of a plurality of views 219 for formatting the processed informationand rendering the web page for presentation to the client.

In an exemplary embodiment, each web application that receives requestsfrom web clients and presents dynamic content in response theretorequires a single controller for processing such requests. It ispreferred that controller 210 runs as a servlet that is managed by anunderlying servlet engine 220 (for example, IBM WebSphere). It is alsopreferred that controller 210 is stateless and fully supportsmulti-threading and/or multi-instance operation so that servlet engine220 can drive multiple concurrent web page requests against a singleinstance of controller 210 on different threads.

Upon receiving a web page request, controller 210 invokes one ofplurality of handlers 217 to perform the business processing required topresent the requested web page. In an exemplary embodiment, system 2includes one handler for each web page to be served by system 2.Accordingly, each of plurality of handlers 217 supports multi-threadingbecause controller 210 creates only a single instance of each ofplurality of handlers 217 and will therefore drive multiple requestsfrom different users onto the same the same one of plurality of handlers217 concurrently.

Each of plurality of handlers 217 performs any of a variety ofprocessing tasks depending on the particular characteristics of therequested web page. One such task performed by handlers 217 is tovalidate any parameters provided by the client upon issuing the request.Parameter validation includes, for example, verifying that all requiredparameters were provided by the client and that all parameters havevalid values or are within an expected range of values. If it isdetermined that any provided parameters are invalid, handlers 217 maytake any suitable steps including, by way of non-limiting example,displaying to the client the same web page again with the fieldassociated with the invalid parameter highlighted or forwarding theclient to an error page that displays a detailed error message.

Each of plurality of handlers 217 also performs navigation validation toensure that the client has arrived at the requested web page from avalid page. Navigation validation may be required, for example, for webpages that setup a conversational state over a series of pages. In orderto perform navigation validation, knowledge of valid navigational pathsare typically coded into those of handlers 217 that has navigationrestrictions. For example, if one of handlers 217 detects that a userdid not traverse a required sequence of pages before issuing theparticular web page request but rather jumped to one of the pages withinthe sequence (other than the first page), then the one of handlers 217may reject the request as invalid. In this case, the one of handlers 271may take any corrective actions including, by way of non-limitingexample, causing the user to be automatically forward to the first pagein the expected sequence.

As a specific example, a client may access system 2 to purchase sharesin a company. The process of purchasing shares requires the client toperform multiple steps including selecting the shares the client desiresto buy, entering order information such as price, quantity, account,submitting the order and receiving the confirmation. This sequence formsa conversation requiring multiple request/reply steps each of which is aseparate web-page. Thus, if the client successfully submits pages 1−N,page N+1 is displayed to the client until the end of the sequence isreached. Because web pages can be bookmarked individually, it ispossible that the client may bookmark, for example, page 2 in thesequence in an attempt to return directly to this page at a later date.In this case, navigation validation performed by one of handlers 217determines that page 2 in the sequence can only be displayed immediatelyfollowing page 1 and therefore would reject the request.

In addition to the above functions, the one of handlers 217 invoked bycontroller 210 calls at least one of a plurality of content beans 215for performing additional processing tasks to satisfy the web pagerequest. The tasks performed by content beans 215 may include, forexample, implementing business logic and performing parametervalidation. In another example, one of content beans 215 provides andinterface to content systems 213 and external systems 214 in order toretrieve/manipulate information necessary for the requested web page.(In the situation where one of content beans 215 is providing aninterface to content systems 213 and external systems 214, parametervalidation is not performed by the one of content beans 215 and theparameter validation performed by content systems 213 and externalsystems 214 is relied upon. Alternatively, parameter validation may beperformed by one of handlers 217, as described above.)

Thus, each of handlers 217 calls only those of content beans 215 thatare required to perform the business logic for the particular web pagerequest for which the each of handlers 217 is responsible. Becausecontent beans 215 include the routines necessary to perform the businesslogic for all web pages supported by the web application, each ofhandlers 217 only calls those of content beans 215 that are needed toperform the business logic associated with the particular web page. Inthis way, the business logic functions performed by content beans 215are shared by all of handlers 217 and the need for handlers 217 to eachinclude these functions is eliminated.

In an exemplary embodiment, content beans 215 are layered with eachlayer of content beans 215 providing a different level of businessfunction. For example, a lowest layer of content beans 215 may provide asimple interface to content system 213 and external systems 214 bymanaging the actual request/response protocol for submitting operationsto and maintaining the context that is necessary for communications withsystems 213, 214. The lowest layer of content beans 215 may also performany necessary data transformation to translate between the interfacesprovided by systems 213, 214 and the interfaces used by the webapplication being operated by system 2. A higher layer of content beans215 may combine some of content beans 215 belonging to a lower layer toperform more complex business operations. For example, a higher layer ofcontent beans 215 that displays portfolio information to a client mayinvoke a first lower level of content beans 215 to retrieve the client'saccount balances, a second lower level of content beans 215 to retrievethe client's security holdings and a third lower level of content beans215 to retrieve any pending trades/transfers. Still higher layers ofcontent beans 215 may combine access to more than one content system 213and external system 214 for presenting a unified business view for aparticular operation across the underlying information sources. Forexample, higher layers of content beans 215 may perform an operationacross a remote external system for core banking operations and a localdatabase for static data retrieval.

As a specific example, displaying a valuation of a client's shareholdings typically requires the combination of the results of at leastthe following operations performed by some of content beans 215: (i) theretrieval of a list of client share holdings from a core-banking source,(ii) the retrieval of the current market price for each holding from amarket data source and (iii) if the client holdings are in differentcurrencies, the retrieval from an FX source of an FX conversion ratefrom each currency to the valuation currency. In this case, a higherlayer of content beans 215 may call lower layers of content beans 215 inorder to perform these multiple operations across multiple sources.

In an exemplary embodiment, content beans 215 are constructed using theJava programming language. When one of content beans 215 needs tocommunicate with non-Java systems, then that one of content beans 215may use standard Java APIs for communication.

Accordingly, by using content beans 215 as an interface for accessingsources of content, the content sources and the mechanisms required toaccess these sources may be changed without impacting the pages thatrequire such content by simply updating the appropriate content beans215 responsible for accessing such content sources.

After the data processing performed by content beans 215 is completed,the invoking one of handlers 217 constructs a model bean 218 andpopulates model bean 218 with the data retrieved from the content systemby content beans 215. The function of model bean 218 is to hold the datathat results from processing a web page request that is to be used topresent the requested web page. The structure of model beans 218 is aJava class that is able to hold data elements inside, to ‘set’ thesedata elements to specific values, and then subsequently ‘get’ thesevalues back out. The specific data that model bean 218 holds isdetermined by the business operation being performed and the data valuesresulting from this business operation that are to be displayed as aresult. So for example, for an application in which an account transferis to be made, model bean 218 typically holds at least the previousbalance, the resulting balance and the name of the particular account.

In an exemplary embodiment, model bean 218 does not contain any businesslogic or formatting logic as these functions are performed by handlers217 and views 219 (as will be described below). Furthermore, unlikecontroller 210, handlers 217 and views 219, model bean 218 need notsupport multi-threading because typically a separate instance of modelbean 218 is created to hold the retrieved associated with each web pagerequest. For example, for requests from different users that re beingprocesses concurrently in different threads on the same one of handlers217, each thread of the same one of handlers 217 creates an instance ofmodel bean 218 for each thread for storing data associated with thatparticular thread.

Typically, each request has associated therewith one model bean 218 andall of the data resulting from the request is stored into this one modelbean 218. In certain cases, however, such as when complex pages arerequested or those maintaining conversational state, the invoking one ofhandlers 217 may create a plurality of model beans 218 for holding theretrieved data. The invoking one of handlers 217 then attaches modelbeans 218 to the current request context or, in the case ofconversational state, to the session context. (The difference betweenattaching a model bean to a request context and a session context isthat after the web page request is fulfilled, a model bean attached tothe request context is automatically discarded by controller 210 whereasa model bean attached to the session context remains alive for thelifetime of the session, or until discarded by the web application.)

For example, multiple model beans 218 may be created is by one ofhandlers 217 that is invoked in a login process in which it is often thecase that special processing is required and the one of handlers 217 maybe required to place state information in a different model bean 218 fordedicated use by the login mechanism. Multiple model beans 218 are morecommonly required in the case of a conversational state, such as thesituation described above involving a client purchasing shares, in whichdetails regarding which page was previously invoked for navigationvalidation is stored in a separate one of model beans 218 associatedwith a session context in order to maintain a conversational state.

Generally, once the data necessary for the requested web page isretrieved and stored in model bean 218, the one of handlers 217 returnscontrol back to controller 210 which will then invoke one of views 219for rendering and presenting the requested page to the user. In certainsituations, however, as a result of processing the user's web pagerequest, one of handlers 217 may determine that a different page shouldbe forwarded to the user. In such a case, before returning control tocontroller 210, this ‘forwarded’ page is set by the one of handlers 217and, on return to controller 210, controller 210 ‘chains’ on to adifferent one of handlers 217 that is responsible for processing thedata required for the forwarded page. The different one of handlers 217then processes the forwarded page in a similar manner as described aboveand returns control to controller 210 when finished.

For example, if parameter validation performed by one of handlers 217 inresponse to a page request fails, then the one of handlers 217 maydisplay the same web page again to the client having the fieldassociated with the failing parameter highlighted. If parametervalidation is successful, then the one of handlers 217 calls some ofcontent beans 215 for performing the necessary business operations toretrieve the information required for the requested web page. If thebusiness operations fail (for example, in the share purchase exampledescribed above, if there is insufficient funds in the account to buythe selected shares), then the one of handlers 217 may forward onto adiagnostic web page explaining why the operation could not be completed.If the business operation succeeds then the one of handlers 217 mayforward onto a confirmation web page showing the result of completingthe transaction.

The process by which the one of handlers 217 forwards onto a web page isas follows. First, the one of handlers 217 is invoked, performsparameter validation and then invokes one of content beans 215. The oneof content beans 215 may then invoke a business operation againstcontent system 213 and/or external system 214, as required. The one ofcontent beans 215 then returns control back to the one of handlers 217that retrieves information from the one of content beans 215 and storesthe information into one of model bean 218. The one of handlers 217 thensets the ‘next’ page to be forwarded to and returns control to thecontroller 210. Upon receiving control, controller 210 sees that a‘next’ page has been set and invokes the corresponding one of handlers217 for that page. The corresponding one of handlers 217 performs itsoperations as required and eventually returns control to controller 210,this time without setting any further ‘next’ page. Controller 210 thensees that no next page is set and proceeds to have the web pagedisplayed to the client, as will be described below.

Once the data processing is completed and model bean 218 is populatedwith the processed data, the one of handlers 217 returns control tocontroller 210. Controller 210 then invokes one of views 219 forrendering and presenting the web page to the client in response to theclient's request. In an exemplary embodiment, each of views 219 supportsone web page provided by the web application. Accordingly, controllerinvokes the one of views 219 that is responsible for rendering andpresenting the request web page.

In order to render and present the requested page to the client, the oneof views 219 extracts the data to be used in the web page from modelbean 218 that was stored therein by one of handlers 215. After receivingthe data, the one of views 219 invokes at least one of a plurality ofview beans 216 for formatting and rendering the data into HTML forpresentation to the client.

In an exemplary embodiment, view beans 216 are implemented in Java andperform various functions to format and render the data elements in theweb page. For example, each web pages typically includes standardfooters and headers (for e.g., a legal disclaimer and a corporate logo).In such a case one of view beans 216 would be used to render each ofthese elements so that these elements are uniformly displayed bydifferent web pages and changes to these elements need only be made in asingle location.

Because view beans 216 include the routines necessary to format alltypes of data objects supported by the web application, the one of views219 only calls those of view beans 216 that are needed to render thedata elements included in the web page for which the particular one ofviews 219 is responsible. By centralizing the formatting and renderingfunctions in view beans 216 and enabling all of views 219 to access viewbeans 216, the need for each of views 219 to incorporate these functionsis eliminated and all web pages presented by the web application mayhave a uniform look-and-feel, as desired.

In an exemplary embodiment, views 219 are constructed using JSPtechnology and include static HTML together with standard “jsp” tags andembedded Java code that are used to generate dynamic content. The Javacode may be invoked directly from views 219 by including it in aprovided tag. Alternatively, custom jsp tags are used to invoke the Javacode. It is also preferred that views 219 support multi-threading sothat controller 210 can drive multiple requests from different clientsagainst each of views 219 concurrently.

In another exemplary embodiment, view beans 216 render the web page inthe foreign language selected by the client. The prior art method bywhich web applications typically support multiple languages is to storea version of each web page using text in each desired language. So, forexample, if a particular web page includes as text labels the words“Client Name,” “Account Number” and “Portfolio Activity,” then aseparate version of the web page is maintained each having the textlabels in one of the languages that is to be supported by the webapplication. As the number of languages supported increases, the priorart approach becomes cumbersome.

To overcome the prior art limitations of having to store a version ofevery web page for each supported language, all text included in a webpage layout is represented by a text label. For example, if a particularweb page includes a disclaimer paragraph, the web page layout mayinclude a “DISCLAIMER” label that indicates that the disclaimerparagraph to be included in the web page. When view beans 216 rendersthe particular web page for presentation to the client, view beans 216receives from controller 210 the disclaimer text in the preferredlanguage of the requesting client (as indicated in the user context) toinsert into the web page. In this way, only one page layout ismaintained for each web page supported by the web application and viewsbeans 216 replaces the text labels with actual text in the appropriatelanguage just before the web page is presented to the client.

In an exemplary embodiment, a language file 222 is included that storesthe actual text replacement for each text label for each languagesupported by the web application. Language file 222 may be an externalfile in communications with controller 210 or may be embedded incontroller 210.

In certain situations, one of handlers 217 may decide that it is moresuitable to have a different one of views 219 present a particular webpage and not the one of views 219 that normally presents the particularweb page. In such a case, the one of handlers 217 indicates tocontroller 210 which of views 219 that controller 210 should invoke.This situation may arise when a web site allows a user to personalisethe site by selecting one of a number of layouts to display theirinformation. In this case, multiple views 219 is be formed one for eachlayout style. The one of handlers 217 checks the user's displaypreferences and then selects the one of multiple views 219 thatcorresponds to the user's preferred layout for a particular page.

In some situations, the one of handlers 217 actually renders the webpage itself (for example, when the web page consists of a PDF file) inwhich case the one of handlers 217 indicates to controller 210 that noneof views 219 are required and controller 210 should present theresulting web page to the client directly.

In an exemplary embodiment, system 2 includes a configuration file 221in communications with content beans 215 for storing configurationinformation associated with each web page served by the web application.The configuration information contained in configuration file 221 mayinclude, by way of non-limiting example, a list of the data objects thatare to be included in each web page as well as the authorizationinformation required to access each page. For example, a particular webpage may include three data objects: a client name, an account balanceand client portfolio details. For this web page, configuration file 221stores in a record associated with the web page a reference to each ofthe three data objects. When the one of handlers 217 associated with theweb page calls those of content beans 215 to process the data for theweb page, those of content beans 215 receives the list of data objectsthat are to be included in the web page. Those of content beans 215 thenretrieve the data objects contained in the list from content systems 213and external systems 214. The benefit of storing a list of data objectsfor each web page in configuration file is that the contents of a webpage can then be modified by simply changing the data object list forthat web page included in the configuration file without having tomodify and recode any of content beans 215 directly.

Configuration file 221 also includes web page authorization informationthat may be used by handlers 217 to determine whether a client requestfor a particular web page is authorized. Each supported web page hasassociated therewith an identifier for the business function that isperformed by the page and each user is granted authorization to executea certain set of these business functions. Configuration file 221 storesthis information and upon receiving a user request for access to abusiness function the one of handlers 217 will access the authorizationinformation to determine whether access should be granted. In certaincases, there may be more than one business function available on aparticular web page in which case the one of handlers 217 ensures that auser requesting access to this multi-function page does not execute oneof the functions for which the user is not authorized. Similarly,configuration file 221 stores for each web page an indication whetherthe page may be accesses by an user that is not authenticated (forexample, a user browsing the site as a visitor that has not logged inwith a user ID and password). If a web page is only to be accessed byauthenticated users, then Controller 210 will prevent a user that is notauthenticated from accessing the particular web page.

In an exemplary embodiment, configuration file is in communications withcontroller 210 so that when controller 210 invokes one of handlers 217,controller 210 also passes along the necessary authorizationconfiguration information required by the one of handlers 217 andcontent beans 215.

Accordingly, a system is provided for serving dynamic content thatimproves the efficiency and reduces the overhead costs associated withprior art systems.

Based on the above description, it will be obvious to one of ordinaryskill to implement the system and methods of the present invention inone or more computer programs that are executable on a programmablesystem including at least one programmable processor coupled to receivedata and instructions from, and to transmit data and instructions to, adata storage system, at least one input device, and at least one outputdevice. Each computer program may be implemented in a high-levelprocedural or object-oriented programming language, or in assembly ormachine language if desired; and in any case, the language may be acompiled or interpreted language. Suitable processors include, by way ofexample, both general and special purpose microprocessors. Furthermore,alternate embodiments of the invention that implement the system inhardware, firmware or a combination of both hardware and software, aswell as distributing modules and/or data in a different fashion will beapparent to those skilled in the art and are also within the scope ofthe invention. In addition, it will be obvious to one of ordinary skillto use a conventional database management system such as, by way ofnon-limiting example, Sybase, Oracle and DB2, as a platform forimplementing the present invention.

It will thus be seen that the objects set forth above, among those madeapparent from the preceding description, are efficiently attained and,since certain changes may be made in carrying out the above process, ina described product, and in the construction set forth without departingfrom the spirit and scope of the invention, it is intended that allmatter contained in the above description shown in the accompanyingdrawing shall be interpreted as illustrative and not in a limitingsense.

It is also to be understood that the following claims are intended tocover all of the generic and specific features of the invention hereindescribed, and all statements of the scope of the invention, which, as amatter of language, might be said to fall therebetween.

1. A system for presenting a requested web page selected from aplurality of web pages, comprising: a plurality of handlers, each ofsaid plurality of handlers performing at least one processing taskassociated with one of said plurality of web pages; at least one layeredcontent bean being invoked by any of said plurality of handlers forretrieving content required for the one of said plurality of web pagesassociated with said any of said plurality of handlers, wherein the atleast one layered content bean is comprised of at least one lower layercontent bean and a higher layer content bean, wherein the higher layercontent bean is capable of implementing business logic; at least onemodel bean for storing said content, wherein the at least one model beanis constructed by a web server and wherein no business logic orformatting logic steps are implemented in the model bean; a plurality ofviews, each of said plurality of views associated with one of saidplurality of web pages for receiving said content from said at least onemodel bean and for presenting the one of said plurality of web page; atleast one view bean being invoked by any of said plurality of views forrendering the one of said plurality of web pages; and a controller forreceiving a request for said requested web page; wherein when saidcontroller receives said request, said controller invokes the one ofsaid plurality of handlers associated with said requested web page forprocessing content required for said requested web page and saidcontroller invokes the one of said plurality of views for presentingsaid requested web page, and wherein the plurality of handlers, at leastone layered content bean, at least one model bean, plurality of views,at least one view bean, and the controller, are executed on the webserver.
 2. The system of claim 1, wherein said request for saidrequested web page includes at least one parameter and said at least oneprocessing task preformed by at least one of said plurality of handlersincludes validating said at least one parameter.
 3. The system of claim1, wherein said request for said requested web page is subsequent to anavigation and said at least one processing task performed by at leastone of said plurality of handlers includes validating said navigation.4. The system of claim 1, wherein at least one of said plurality ofhandlers directs said controller to cause a different web page to bepresented.
 5. The system of claim 1, wherein at least one of saidplurality of handlers directs said controller to invoke a different oneof said plurality of views for presenting said requested web page. 6.The system of claim 1, wherein at least one of said handlers renders therequested web page.
 7. The system of claim 6, wherein said controllerpresents the requested of web page.
 8. The system of claim 1, whereineach of said plurality of handlers is multithreaded.
 9. The system ofclaim 1, wherein said at least one content bean receives content from atleast one external system.
 10. The system of claim 9, wherein saidsystem has a first interface and said external system has a secondinterface and said at least one content bean translates between saidfirst interface and said second interface.
 11. The system of claim 1,further comprising a plurality of content beans each having a functionand wherein said functions of said plurality of content beans arelayered.
 12. The system of claim 1, further comprising a configurationfile, said configuration file including a list of data objects for atleast one of said plurality of web pages, and wherein said at least onecontent bean receives said list of data objects and retrieves said dataobjects in said list for inclusion in said at least one of saidplurality of web pages.
 13. The system of claim 12, wherein said atleast one of said plurality of web pages is modified by modifying saidlist of data objects.
 14. The system of claim 12, wherein saidconfiguration file includes authorization requirements for saidrequested web page, and wherein said handler verifies that said requestfor said requested web page satisfies said authorization requirements.15. The system of claim 1, wherein each of said plurality of views ismultithreaded.
 16. The system of claim 1, wherein each of said pluralityof views is formed using JSP technology.
 17. The system of claim 1,wherein said at least one view bean formats the one of said plurality ofweb pages into HTML.
 18. The system of claim 1, further comprising alanguage file storing text in a plurality of languages, said text beingassociated with a text label, and wherein at least one of said pluralityof web pages includes said text label and said at least one view beanreplaces said text label with said associated text in a selected one ofsaid plurality of languages.
 19. A method for presenting a requested webpage selected from a plurality of web pages, comprising the steps of:performing at least one processing task associated with said requestedweb page; invoking at least one layered content bean for retrievingcontent required for said requested web page, wherein the at least onelayered content bean is comprised of at least one lower layer contentbean and a higher layer content bean, wherein the higher layer contentbean is capable of implementing business logic; storing said contentrequired for said requested web page in at least one model bean, whereinthe at least one model bean is constructed by a web server and whereinno business logic or formatting logic steps are implemented in the modelbean; receiving said content from said at least one model bean; invokingat least one view bean for rendering said requested web page; andpresenting said requested web page including said content, wherein theat least one layered content bean, at least one model bean, and at leastone view bean are executed on the web server.
 20. The method of claim19, wherein said request for said requested web page includes at leastone parameter and the step of performing at least one processing taskincludes the step of: validating said at least one parameter.
 21. Themethod of claim 19, wherein said request for said requested web age issubsequent to a navigation and the step of performing at least oneprocessing task includes the step of: validating said navigation. 22.The method of claim 19, further comprising the step of: directing adifferent web page to be presented.
 23. The method of claim 19, whereinsaid at least one content bean receives content from at least onecontent system.
 24. The method of claim 23, wherein said at least onecontent bean executes on a system having a first interface and saidcontent system has a second interface and wherein the step of invokingat least one content bean for retrieving content includes the step of:translating between said first interface and said second interface. 25.The method of claim 19, further comprising a plurality of content beanseach having a function and wherein said functions of said plurality ofcontent beans are layered.
 26. The method of claim 19, furthercomprising a configuration file, said configuration file including alist of data objects for said requested web page, and wherein the stopof invoking at least one content bean for retrieving content requiredincludes the steps of: receiving said list of data objects; andretrieving said data objects in said list of inclusion in said requestedweb page.
 27. The method of claim 26, further comprising the step of:modifying said requested web page by modifying said list of dataobjects.
 28. The method of claim 26, wherein said configuration fileincludes authorization requirements for said requested web page, saidmethod further comprising the step of: verifying that said request forsaid requested web page satisfies said authorization requirements. 29.The method of claim 19, wherein the step of invoking at least one viewbean for rendering said requested web page includes the step of:formatting said requested web page into HTML.
 30. The method of claim19, further comprising a language file storing text in a plurality oflanguages, said text being associated with a text label, wherein saidrequested web page includes said text label, and wherein the step ofinvoking at least one view bean for rendering said requested web pageincludes the step of: replacing said text label with said associatedtext in a selected one of said plurality of languages.
 31. A system forpresenting a requested web page selected from a plurality of web pages,comprising: a plurality of handlers, one of said plurality of handlersperforming at least one processing task associated with said requestedweb page; at least one layered content bean being invoked by said one ofsaid plurality of handlers for retrieving content required for saidrequested web page, wherein the at least one layered content bean iscomprised of at least one lower layer content bean and a higher layercontent bean, wherein the higher layer content bean is capable ofimplementing business logic; at least one model bean for storing saidcontent, wherein the at least one model bean is constructed by a webserver and wherein no business logic or formatting logic steps areimplemented in the model bean; a plurality of views, one of saidplurality of views associated with said requested web page for receivingsaid content from said at least one model bean and for presenting saidrequested web page; at least one view bean being invoked by said one ofsaid plurality of views for rendering said requested web page; and acontroller for receiving a request for said requested web page, whereinwhen said controller receives said request, said controller invokes saidone of said plurality of handlers and said one of said plurality ofviews, and wherein the plurality of handlers, at least one layeredcontent bean, at least one model bean, plurality of views, at least oneview bean, and the controller are executed on the web server.